package com.itbaizhan.cxpt.parser;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.itbaizhan.cxpt.entity.Standard;

import java.util.ArrayList;
import java.util.List;

public class StandardJsonParser {
    public static List<Standard> parseStandards(String jsonResponse) throws Exception {


        JSONObject jsonObject = JSON.parseObject(jsonResponse);

        // 获取 choices 数组
        JSONArray choicesArray = jsonObject.getJSONArray("choices");

        // 获取第一个 choice 对象
        JSONObject firstChoice = choicesArray.getJSONObject(0);

        // 获取 message 对象
        JSONObject message = firstChoice.getJSONObject("message");

        // 获取 content 字符串
        String content = message.getString("content");

        // 去掉 ```json\n 和 结尾的 ```
        content = content.replace("```json\n", "").replace("```", "");

        // 解析 content 为 JSON 数组
        JSONArray standardArray = JSON.parseArray(content);

        // 封装成 List<Standard>
        List<Standard> standardList = new ArrayList<>();

        for (int i = 0; i < standardArray.size(); i++) {
            JSONObject standardObj = standardArray.getJSONObject(i);
            Standard standard = new Standard();
            standard.setStandardNo(standardObj.getString("standardNo"));
            standard.setStandardName(standardObj.getString("standardName"));
            standard.setPage(standardObj.getString("page"));
            standardList.add(standard);
        }
        return standardList;
    }

    public static void main(String[] args) throws Exception {

        String message = "{\"choices\":[{\"message\":{\"content\":\"```json\\n[\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 1.1-2020\\\",\\n        \\\"standardName\\\": \\\"标准化工作导则第1部分：标准的结构和编写规则\\\",\\n        \\\"page\\\": \\\"II\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB 20287-2006\\\",\\n        \\\"standardName\\\": \\\"农用微生物菌剂\\\",\\n        \\\"page\\\": \\\"II\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB 190\\\",\\n        \\\"standardName\\\": \\\"危险货物包装标志\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 191\\\",\\n        \\\"standardName\\\": \\\"包装储运图示标志\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 1250\\\",\\n        \\\"standardName\\\": \\\"极限数值的表达方法和判定方法\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 6679\\\",\\n        \\\"standardName\\\": \\\"固体化工产品采样通则\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 6682\\\",\\n        \\\"standardName\\\": \\\"分析实验室用水规格和试验方法\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 8170\\\",\\n        \\\"standardName\\\": \\\"数值修约规则与极限数值的表示和判定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 8576\\\",\\n        \\\"standardName\\\": \\\"复混肥料中游离水含量的测定真空烘箱法\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 11957\\\",\\n        \\\"standardName\\\": \\\"腐植酸含量的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB 18382\\\",\\n        \\\"standardName\\\": \\\"肥料标识内容和要求\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB 18877\\\",\\n        \\\"standardName\\\": \\\"肥料汞、镉、砷、铅、铬含量的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 19524.1\\\",\\n        \\\"standardName\\\": \\\"肥料中粪大肠杆菌群的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 19524.2\\\",\\n        \\\"standardName\\\": \\\"肥料中蛔虫卵死亡率的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB 20287\\\",\\n        \\\"standardName\\\": \\\"农用微生物菌剂\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 22924\\\",\\n        \\\"standardName\\\": \\\"肥料中缩二脲含量的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB/T 23349\\\",\\n        \\\"standardName\\\": \\\"肥料中总汞、总镉、总砷、总铅、总铬含量的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"GB 38400\\\",\\n        \\\"standardName\\\": \\\"肥料中有毒有害物质的限量要求\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"HG/T 2843\\\",\\n        \\\"standardName\\\": \\\"化肥产品化学分析常用标准滴定溶液、标准溶液、试剂溶液和指示溶液\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"JJF 1070\\\",\\n        \\\"standardName\\\": \\\"定量包装商品净含量计量检验规则\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"NY/T 525\\\",\\n        \\\"standardName\\\": \\\"有机肥料\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"NY/T 1113\\\",\\n        \\\"standardName\\\": \\\"微生物肥料术语\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"NY/T 1978\\\",\\n        \\\"standardName\\\": \\\"肥料汞、镉、砷、铅、铬含量的测定\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"NY/T 1979\\\",\\n        \\\"standardName\\\": \\\"肥料登记标签技术要求\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"NY/T 2321\\\",\\n        \\\"standardName\\\": \\\"微生物肥料产品检验规程\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"standardNo\\\": \\\"NY/T 2544\\\",\\n        \\\"standardName\\\": \\\"肥料效果试验和评价通用要求\\\",\\n        \\\"page\\\": \\\"2\\\"\\n    }\\n]\\n```\",\"role\":\"assistant\"},\"finish_reason\":\"stop\",\"index\":0,\"logprobs\":null}],\"object\":\"chat.completion\",\"usage\":{\"prompt_tokens\":2948,\"completion_tokens\":1071,\"total_tokens\":4019},\"created\":1745072205,\"system_fingerprint\":null,\"model\":\"qwen-long\",\"id\":\"chatcmpl-40e65e2c-3c8e-95e8-81fe-f6173e9af73a\"}";
        StandardJsonParser.parseStandards(message);

    }
}
